package com.rhb.rhbaiagent.agent;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;

@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
public abstract class ReactAgent extends BaseAgent {

    /**
     * 定义一个思考方法
     */
    public abstract boolean think();

    /**
     * 定义一个行动，返回执行的结果
     */
    public abstract String act();

    /**
     * 执行单个步骤
     *
     * @return 返回单个步骤的执行结果
     */
    @Override
    public String step(){
        try{
            boolean shouldAct = think();
            if(!shouldAct){
                return "思考完成 - 无需行动";
            }
            return act();
        }catch (Exception e){
            e.printStackTrace();
            return "步骤执行失败： " + e.getMessage();
        }
    }
}
